//封装axios
import axios from "axios";
import { Toast, Notify } from 'vant'
export const baseURL = 'http://localhost:2023/'
export const request = axios.create({   // axios 配置项 
    timeout: 60000,  // 超时 
    // baseURL: baseURL,  // 项目的基本路径 
    headers: {   // 请求头 token 
        // Authorization:'AUTH_TOKEN',
        // 'Content-Type':'application/x-www-form-urlencoded'  // 设置请求的数据格式 
    }
})

export const ShowLoading = (msg = '加载中...') => {
    Toast.clear();
    Toast.loading({
        message: msg,
        forbidClick: true,
    });
}
// 成功 
export const ShowSuccess = (msg = '成功') => {
    Toast.clear();
    Toast.success(msg);
}
// 失败
export const ShowFail = (msg = '失败') => {
    Toast.clear()
    Notify.clear()
    Notify({
        message: msg,
        color: '#ad0000',
        background: '#ffe1e1',
    });
}


// 拦截器 
// Interceptors 拦截器   全局统一 
// 请求的拦截器   (请求发送之前做的事情)
request.interceptors.request.use(function (config) {

    // 请求成功之前
    ShowLoading()

    return config;
}, function (error) {
    // 请求失败做的事情 
    ShowFail("请求失败-网络异常")
    return Promise.reject(error);
});

// 响应的拦截器  (响应之后做的事情)
request.interceptors.response.use(function (response) {
    // 响应成功的拦截器 
    // ShowSuccess()    // 手机端APP不需要成功的提示 
    Toast.clear()
    console.log(response.data);
    return response;
}, function (error) {
    // 响应失败 
    ShowFail("响应失败 - 未知错误")
    return Promise.reject(error);
});

//查询
export const Get = (url,params,headers)=>{
    return new Promise(function(resolve,reject){
        request({
            url,
            method:"GET",
            params:params,  // get请求的传参方式 
            headers,
        }).then(res=>{
            resolve(res.data) // axios 的数据 是包装在 data 里面 
        }).catch(err=>{
            reject(err)
        })
    })
}
//增加
export const Post = (url,data,params,headers)=>{
    return new Promise(function(resolve,reject){
        request({
            url,
            method:"POST",
            data,  // post 提交的data 
            params:params,  
            headers,
        }).then(res=>{
            resolve(res.data)  
        }).catch(err=>{
            reject(err)
        })
    })
}
//删除
export const Delete = (url,data,headers)=>{
    return new Promise(function(resolve,reject){
        request({
            url,
            method:"delete",
            data,  
            headers,
        }).then(res=>{
            resolve(res.data)  
        }).catch(err=>{
            reject(err)
        })
    })
}
//修改
export const Patch = (url,data,headers)=>{
    return new Promise(function(resolve,reject){
        request({
            url,
            method:"patch",
            data,  
            headers,
        }).then(res=>{
            resolve(res.data)  
        }).catch(err=>{
            reject(err)
        })
    })
}